
package com.enjoyor.soa.traffic.api.service.dubbo.collectms;

import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

import java.util.List;
import java.util.Map;

@SuppressWarnings("rawtypes")
public interface IDubboAnalysisService {
	// 杭州新页面，24小时流量,每一个车道每小时的流量
	ResultPojo getHZAlysis24hour(String devId, String cdate);

	// 杭州新页面，早晚高峰
	ResultPojo getHZAlysis24hourDay(String devId, String cdate);

	/**
	 * @param devIds
	 *            设备id,用","隔开
	 * @param times
	 *            日期,格式为yyyy-mm-dd,用","隔开
	 * @return ResultPojo类型
	 * @throws @Title:
	 *             getDeviceAnalysis5Min
	 * @Description: (根据设备id和时间获取5分钟数据统计)
	 */
	ResultPojo getDeviceAnalysis5Min(String[] devIds, String[] times);

	/**
	 * @return List<AnalysisMinDto>
	 */
	ResultPojo getDeviceAnalysisMinTrans(String[] devIds, String[] times, String hour);

	/**
	 * @param devIds
	 *            设备id,用","隔开
	 * @param times
	 *            日期,格式为yyyy-mm-dd,用","隔开
	 * @return ResultPojo类型
	 * @throws @Title:
	 *             getDeviceAnalysisHour
	 * @Description: (根据设备id和时间获取每小时数据统计)
	 */
	ResultPojo getDeviceAnalysisHour(String[] devIds, String[] times);

	/**
	 * @return List<AnalysisHourDto>
	 */
	ResultPojo getDeviceAnalysisHourTrans(String[] devIds, int[] times, String[] hours);

	/**
	 * @param devIds
	 *            设备id,用","隔开
	 * @param times
	 *            日期,格式为yyyy-mm-dd,用","隔开
	 * @return ResultPojo类型
	 * @throws @Title:
	 *             getDeviceAnalysisDayr
	 * @Description: (根据设备id和时间获取每天数据统计)
	 */
	ResultPojo getDeviceAnalysisDay(String[] devIds, String[] times);

	/**
	 * @return List<AnalysisDayDto>
	 */
	ResultPojo getDeviceAnalysisDayTrans(String[] devIds, String times, String month);

	/**
	 * @return List<AnalysisDayDto>
	 */
	ResultPojo getDeviceAnalysisMonth(String[] devIds, String[] times);

	/**
	 * @return List<AnalysisDayDto>
	 */
	ResultPojo getDeviceAnalysisWeekTrans(String[] devIds, String year, String week);

	/**
	 * @return List<DevDataAvailableDto>
	 */
	ResultPojo getAnalysisAvailable(String[] devIds, String startTime, String endTime);

	/**
	 * @return List<DevDataUnusualDto>
	 */
	ResultPojo getAnalysisUnusual(String[] devIds, String startTime, String endTime);

	/**
	 * @return List<DevAlarmDto>
	 */
	ResultPojo getAnalysisFault(String[] devIds, String startTime, String endTime);

	/**
	 * @param devIds
	 *            设备id
	 * @return ResultPojo类型
	 * @throws @Title:
	 *             getDevDayFlow
	 * @Description: (获取设备数据量总数统计)
	 */
	ResultPojo getDevTodayFlow(String[] devIds);

	/**
	 * @param devIds
	 *            设备id
	 * @return ResultPojo类型
	 * @throws @Title:
	 *             getTodayTotalFlow
	 * @Description: (获取当日数据量总数统计)
	 */
	ResultPojo getTodayTotalFlow();

	/**
	 * @return ResultPojo类型
	 * @throws @Title:
	 *             getReal5MinTotalFlow
	 * @Description: (实时5分钟数据总量)
	 */
	ResultPojo getReal5MinTotalFlow();

	/**
	 * @return List<AnalysisMinDto>
	 */
	ResultPojo getDeviceAnalysis15MinTrans(String[] devIds, String collectTime, String hour);

	/**
	 * @return List<List < AnalysisDataDto>>
	 */
	ResultPojo getanAlysis24hour5min(String devId, String cdate, Integer hours);

	/**
	 * @return List<List < AnalysisDataDto>>
	 */
	ResultPojo getanAlysis24hour15min(String devId, String cdate, Integer hours);

	/**
	 * @return List<List < DevAlarmDto>>
	 */

	ResultPojo getAnalysisFaultV1(List devIdList, String startTime, String endTime);

	/**
	 * 整体流量查询（日）
	 *
	 * @return List<AnalysisHourDto>
	 */
	ResultPojo getDayFlowAndSpeed(int date);

	/**
	 * 整体平均流速查询（日）
	 *
	 * @return List<AnalysisHourDto>
	 */
	ResultPojo getDayFlowAndAvgSpeed(int date);

	/**
	 * 整体流量查询（月）
	 *
	 * @return List<AnalysisDayDto>
	 */
	ResultPojo getMonthFlow(int date);

	/**
	 * 整体流速查询（月）
	 *
	 * @return List<AnalysisDayDto>
	 */
	ResultPojo getMonthSpeed(int date);

	/**
	 * 流量当天、周、月、日排名；
	 *
	 * @return Page<Map < String , Object>>
	 */
	ResultPojo getRankFlowAndSpeed(String startTime, String endTime, String flag, String blockId,
			Page<Map<String, Object>> page);

	/**
	 * 同周期对比（无点位）
	 *
	 * @return Page<Map < String , Object>>
	 */
	ResultPojo compareToFlowAndSpeed(String startTime1, String endTime1, String startTime2, String endTime2,
			String flag, String blockId, Page<Map<String, Object>> page);

	/**
	 * 同周期对比（有点位）
	 *
	 * @return Page<Map < String , Object>>
	 */
	ResultPojo compareToFlowAndSpeedForDev(String startTime1, String endTime1, String startTime2, String endTime2,
			String flag, String blockId, Page<Map<String, Object>> page);

	/**
	 * 杭州_流量突变
	 *
	 * @return Page<Map < String , Object>>
	 */
	ResultPojo selectFlowChange(String beginTime, String endTime, String abnormalRatio, String deptId,
			Page<Map<String, Object>> page);
}
